/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.khk.lesson;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;


/**
 *
 * @author Yorre
 */
@ManagedBean
@RequestScoped
public class KlantController {

    /**
     * Creates a new instance of KlantController
     */
    
    private String achternaam;
    private String voornaam;
    private String adres;
    private String postcodeString;
    private String telefoon;
    private String email;
    private String username;
    private String password;
    
    public KlantController() {
        
    
    }

    public void setAchternaam(String achternaam) {
        this.achternaam = achternaam;
    }

    public void setVoornaam(String voornaam) {
        this.voornaam = voornaam;
    }

    public void setAdres(String adres) {
        this.adres = adres;
    }

    public void setPostcodeString(String postcodeString) {
        this.postcodeString = postcodeString;
    }

    public void setTelefoon(String telefoon) {
        this.telefoon = telefoon;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAchternaam() {
        return achternaam;
    }

    public String getVoornaam() {
        return voornaam;
    }

    public String getAdres() {
        return adres;
    }

    public String getPostcodeString() {
        return postcodeString;
    }

    public String getTelefoon() {
        return telefoon;
    }

    public String getEmail() {
        return email;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public List<Klant> getKlanten(){
        
        EntityManagerFactory emf = null;
        try {
            emf = Persistence.createEntityManagerFactory("Awesome_RD_TravelshopPU");
//let op: gebruik hier de juiste naam van de persistence unit 
//(zoek op in persistence.xml)
            
           EntityManager em2 = emf.createEntityManager();
            List<Klant> klanten = em2.createQuery("SELECT k FROM Klant k order by k.naam").getResultList();
            return klanten;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            emf.close();
        }



    }
    
     public Klant getKlantByID(Integer id){
        
        EntityManagerFactory emf = null;
        try {
            emf = Persistence.createEntityManagerFactory("Awesome_RD_TravelshopPU");
//let op: gebruik hier de juiste naam van de persistence unit 
//(zoek op in persistence.xml)

           EntityManager em2 = emf.createEntityManager();
            Klant klant = (Klant)em2.createNamedQuery("Klant.findById").setParameter("id", id).getSingleResult();
            return klant;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            emf.close();
            
        }}
    
    
    
    public String steekInDatabase() {
             
        Postcode postcode = createPostcode(postcodeString);
        
        Klant klant = new Klant();
        klant.setAchterNaam(achternaam);
        klant.setVoornaam(voornaam);
        klant.setAdres(adres);
        klant.setPostcode(postcode);
        klant.setTelefoon(telefoon);
        klant.setEmail(email);
        klant.setUsername(username);
        klant.setPassword(password);

        EntityManagerFactory emf = null;
        try {
            emf = Persistence.createEntityManagerFactory("Awesome_RD_TravelshopPU");
//let op: gebruik hier de juiste naam van de persistence unit 
//(zoek op in persistence.xml)

            EntityManager em = emf.createEntityManager();
            EntityTransaction tx = em.getTransaction();
            tx.begin();
            em.persist(klant);
            tx.commit();
            em.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            emf.close();
        }

        return "index";
    }

    private Postcode createPostcode(String postcodeString) {
        EntityManagerFactory emf = null;
        try {
            emf = Persistence.createEntityManagerFactory("Awesome_RD_TravelshopPU");
//let op: gebruik hier de juiste naam van de persistence unit 
//(zoek op in persistence.xml)

           EntityManager em2 = emf.createEntityManager();
            List<Postcode> postcodes = em2.createQuery("select p from Postcode p where p.postcode = '" + postcodeString+ "'").getResultList();
            return postcodes.get(0);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            emf.close();
        }
    }
    
    public Klant getKlantByLogin(String email, String password)
    {
               
        EntityManagerFactory emf = null;
        try {
            emf = Persistence.createEntityManagerFactory("Awesome_RD_TravelshopPU");
//let op: gebruik hier de juiste naam van de persistence unit 
//(zoek op in persistence.xml)

           EntityManager em2 = emf.createEntityManager();
            List<Klant> klantList = em2.createQuery("select k from Klant k where k.email = '"+ email + "' AND k.password ='"+ password + "'").getResultList();
            Klant klant = klantList.get(0);
            return klant;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            emf.close();
        }
        
        
    }
}
